﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using CrmContacto.Contracts;
using Web.Framework.Svc;
using CrmContacto.Contracts.Contracts;
using CrmContacto.Contracts.Contracts.Search;
using CrmContacto.Contracts.Contracts.Misc;

namespace CrmContacto.Contracts.Services
{
    [ServiceContract]
    public interface IPuntoDeVentaService
    {
        [OperationContract]
        [FaultContract(typeof(WebFrameworkFaultException))]
        Dictionary<string, string> GetCompanyConfigurationKeyValues(int companyId);

        [OperationContract]
        [FaultContract(typeof(WebFrameworkFaultException))]
        List<CompanyConfiguration> GetCompanyConfigurations();

        [OperationContract]
        [FaultContract(typeof(WebFrameworkFaultException))]
        CustomerSearchResult SearchForCustomerByNameOrDocOrEmail(CustomerSearchParam searchParam);

        [OperationContract]
        [FaultContract(typeof(WebFrameworkFaultException))]
        PtoVentaRegistroCliente SaveCustomer(PtoVentaRegistroCliente customer);

        [OperationContract]
        [FaultContract(typeof(WebFrameworkFaultException))]
        List<MaestroBase> GetCampaniasActivas(CampaniasActivasSearch search);

        [OperationContract]
        [FaultContract(typeof(WebFrameworkFaultException))]
        List<MaestroBase> GetTipoDocumento(int paisId);

        [OperationContract]
        [FaultContract(typeof(WebFrameworkFaultException))]
        void ActivarEntidad(ServiceOptions options, string entidad, int estado, int entidadId);

        [OperationContract]
        [FaultContract(typeof(WebFrameworkFaultException))]
        List<MaestroBase> GetProvincias(int paisId);

        [OperationContract]
        [FaultContract(typeof(WebFrameworkFaultException))]
        List<Pais> GetPaisesDto(ServiceOptions options, PaisSearch search);

        [OperationContract]
        [FaultContract(typeof(WebFrameworkFaultException))]
        List<MaestroBase> GetCategoriasDeContacto(MaestroBaseSearch searchMaestroBase);

        [OperationContract]
        [FaultContract(typeof(WebFrameworkFaultException))]
        PdvCantidadTotalesVentaResult GetCantidadTotalesVenta(PdvCantidadTotalesVentaSearch search);

        [OperationContract]
        [FaultContract(typeof(WebFrameworkFaultException))]
        PuntoDeVenta GetPtoVentaCodeById(int puntoDeVentaId);

        [OperationContract]
        [FaultContract(typeof(WebFrameworkFaultException))]
        Cliente GetCustomerById(ServiceOptions options, int customerId, ClienteByIdOptions clientOptions);

        [OperationContract]
        [FaultContract(typeof(WebFrameworkFaultException))]
        List<TipoMensajeBitacora> GetTipoMensajeBitacora(TipoMensajeBitacoraSearch search);

        [OperationContract]
        [FaultContract(typeof(WebFrameworkFaultException))]
        ClienteBitacora SaveCustomerBitacora(ServiceOptions options, ClienteBitacora clienteBitacora);

        [OperationContract]
        [FaultContract(typeof(WebFrameworkFaultException))]
        List<PuntoDeVenta> GetPuntoDeVentaDto(ServiceOptions options, PuntoDeVentaSearch search);
    }
}
